Time based cdn traffic allocation

ABSTRACT

A content delivery network (CDN) performs time varying traffic allocation. The network includes: one or more edge servers that store content corresponding to a domain name that is associated with a content provider, and are configured to deliver the content to end users in response to requests received at the edge servers from the end users; analytics information characterizing the CDN; and a traffic engine that periodically evaluates a service function as having a serve value or a shunt value for the domain name, based at least in part on the analytics information. The traffic engine transmits one or more IP addresses of the edge servers to an interface to a domain name service (DNS) while the service function has the serve value for the domain name; and transmits alternate domain name information of a different network to the interface while the service function has the shunt value.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of priority to, and is acontinuation of U.S. patent application Ser. No. 14/145,617, filed Dec.31, 2013, entitled “TIME BASED CDN TRAFFIC ALLOCATION.” This applicationalso claims the benefit of priority to, and is a continuation-in-part ofU.S. patent application Ser. No. 14/109,340, filed Dec. 17, 2013,entitled “DELIVERY CONTROL FOR COOPERATIVE DELIVERY SYSTEMS.” Theabove-identified patent applications are incorporated by reference intheir entireties for all purposes.

BACKGROUND

Large amounts of content are delivered regularly over the Internet. Thecontent serves a wide variety of purposes, such as one-time display(e.g., streaming audio and video for entertainment and news purposes),commerce (e.g., text, video and graphics for advertising and salespurposes), downloadable media such as books and documents, and manyothers. Content Delivery Networks (CDNs) are often seen as providing“capacity of last resort” for companies that provide content, orservices that involve content, over the Internet.

SUMMARY

In an embodiment, content delivery network (CDN) performs time varyingtraffic allocation. The network includes: one or more edge servers thatstore content corresponding to a domain name that is associated with acontent provider, and are configured to deliver the content to end usersin response to requests received at the edge servers from the end users;analytics information characterizing the CDN; and a traffic engine thatperiodically evaluates a service function as having a serve value or ashunt value for the domain name, based at least in part on the analyticsinformation. The traffic engine transmits one or more IP addresses ofthe edge servers to an interface to a domain name service (DNS) whilethe service function has the serve value for the domain name; andtransmits alternate domain name information of a different network tothe interface while the service function has the shunt value. At a firsttime, the traffic engine determines, based on the analytics information,that the service function has the serve value for the domain name, thetraffic engine transmits an IP address of at least one of the edgeservers to the interface, and the one of the edge servers serves contentcorresponding to the domain name, in response to a request for thecontent from one of the end users that is directed to the domain nameand is resolved by the DNS to provide the IP address. At a second time,the traffic engine determines, based on the analytics information, thatthe service function has the shunt value for the domain name, and thetraffic engine transmits the alternate domain name information of thedifferent network to the interface.

In another embodiment, a content delivery network (CDN) performs timevarying traffic allocation. The network includes: one or more edgeservers that store content from one or more content providers, anddeliver the content to end users in response to requests from the endusers; a traffic engine that transmits an authoritative internetprotocol (IP) address of one of the edge servers that stores at leastone content object of the content, and alternate domain name informationof a different network, to a domain name service (DNS), adjustsparameters of a service percentage algorithm that defines a percentageof incoming requests for the content object that will be served by theCDN, with other incoming requests being shunted to the differentnetwork, based on analytics information characterizing the CDN, andperiodically transmits the service percentage algorithm to the DNS; andthe DNS, which: receives the authoritative IP address, the alternatedomain name information and the parameters from the traffic engine,receives requests for domain name resolution, and in response to areceived domain name resolution request: evaluates the servicepercentage algorithm to determine whether the received domain nameresolution request will be served or shunted, and responds to thereceived domain name resolution request with the authoritative IPaddress when the received domain name resolution request will be served,or with the alternate domain name information when the received domainname resolution request will be shunted. At a first time, the DNSresponds to a first percentage of domain name resolution requests for adomain name associated with the content object by delivering theauthoritative IP address, the one of the edge servers having theauthoritative IP address serves the content object, and the DNS respondsto other domain name resolution requests for the domain name associatedwith the content object by responding with the alternate domain nameinformation such that the other domain name resolution requests areshunted to the different network. At a second time, the DNS responds toa second percentage of domain name resolution requests for the domainname associated with the content object by delivering the authoritativeIP address for one of the edge servers, the second percentage beingdifferent from the first percentage based on the analytics information,the one of the edge servers having the authoritative IP address servesthe content object, and the DNS responds to other domain name resolutionrequests for the domain name associated with the content object byresponding with the alternate domain name information such that theother domain name resolution requests are shunted to the differentnetwork.

In another embodiment, a method of time-based content delivery network(CDN) traffic allocation includes: storing content, from one or morecontent providers and associated with one or more domain names, on aplurality of edge servers that are configured to deliver the content toend users in response to requests received by the edge servers from theend users, each of the domain names being hosted by at least one of theedge servers; storing an authoritative internet protocol (IP) addressfor the one or more domain names; storing alternate domain nameinformation for the one or more domain names; and determining a servicefunction as having a serve value or a shunt value for each of the domainnames, based at least in part on analytics information of the CDN. Whena domain name service (DNS) request is received by the CDN from one ofthe end users for one of the domain names, and when the service functionfor the one of the domain names has the serve value, the method includestransmitting the authoritative IP address for at least one of the edgeservers that hosts the one of the domain names, in response to the DNSrequest, receiving a request for the one of the domain names at the edgeserver having the authoritative IP address, and delivering content ofthe requested one of the domain names, from the edge server having theauthoritative IP address to the one of the end users. When the servicefunction for the one of the domain names has the shunt value, the methodincludes transmitting the alternate domain name information in responseto the DNS request.

Further areas of applicability of the present disclosure will becomeapparent from the detailed description provided hereinafter. It shouldbe understood that the detailed description and specific examples, whileindicating various embodiments, are intended for purposes ofillustration only and are not intended to necessarily limit the scope ofthe disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure is described in conjunction with the appendedfigures.

FIG. 1 shows a graph of traffic demand on a particular content deliverynetwork (CDN) over a sample of time.

FIG. 2 is a schematic diagram illustrating functionality of a CDN thatimplements time varying traffic allocation, in an embodiment.

FIG. 3 is a schematic diagram illustrating certain details of the CDN ofFIG. 2, in an embodiment.

FIG. 4 is a schematic diagram illustrating exemplary details of thetraffic engine and DNS function shown in the CDN of FIG. 2, in anembodiment.

FIG. 5 is a schematic diagram illustrating certain details of a point ofpresence (POP) that supports time varying traffic allocation, in anembodiment.

FIG. 6 is a schematic diagram illustrating certain details of anotherPOP that supports time varying traffic allocation, in an embodiment.

FIG. 7 is a schematic drawing illustrating exemplary connectivity ofmultiple networks, CDNs, ISPs and their respective end user systems overinternet connections, in an embodiment.

FIG. 8 is a swim diagram illustrating a method for time varying CDNtraffic allocation, in an embodiment.

In the appended figures, similar components and/or features may have thesame reference label. Further, various components of the same type maybe distinguished by following the reference label by a dash and a secondlabel that distinguishes among the similar components. If only the firstreference label is used in the specification, the description isapplicable to any one of the similar components having the same firstreference label irrespective of the second reference label.

DETAILED DESCRIPTION

The ensuing description provides exemplary embodiments only, and is notintended to limit the scope, applicability or configuration of thedisclosure. Rather, the description will provide those skilled in theart with an enabling description for implementing embodiments. It isunderstood that various changes may be made in the function andarrangement of elements without departing from the spirit and scope asset forth in the appended claims.

FIG. 1 shows a graph of traffic demand on a particular content deliverynetwork (CDN) over a sample of time. The vertical axis is in gigabits ofcontent requested per second. The horizontal axis spans just over oneweek. Content demand varies significantly over the various times of day.The content demand generally declines to a minimum in early morninghours of each day, and gradually rises through the day, peaking in theearly evening hours. The minima are generally around 1.2 to 1.6 TB/secwhile the peaks are generally around 2.8 to 3.2 TB/sec. The demandcurves shown are for typical weeks; extraordinary events (e.g., largenews events, marquee sporting events, release of highly anticipatedmovies, software updates, electronic games, etc.) can generate even moreextreme swings in demand than those shown.

Variations of content demand over time present a problem for a CDN,because content providers expect prompt delivery of content at all timesof day, yet typically pay only for actual deliveries. To meet deliveryexpectations, a CDN must build its capacity to meet demand in peakperiods, knowing that some capacity will be underutilized in non-peakperiods. Installed capacity is largely a fixed cost, so to pay forinstalled capacity, the CDN may for example charge more per deliverywhen it operates with a mix of utilized and underutilized capacity, thanit might charge per delivery if its installed capacity were running atfull utilization at all times.

FIG. 2 is a schematic diagram illustrating functionality of a CDN 100that implements time varying traffic allocation, in an embodiment. CDN100 includes a traffic engine 110 that allocates traffic based on one ormore factors such as time of day, current network traffic, changes incurrent network traffic, estimated traffic due to scheduled events,estimated traffic due to breaking news, market price for traffic,network health and/or other factors. FIG. 2 illustrates traffic engine110 as separate from points of presence (POPs) 120 of CDN 100, butfunctionality of traffic engine 110 may be implemented within its ownserver, or may be implemented within other servers of CDN 100, eitherseparate from or within any of POPs 120, as discussed further below inconnection with FIGS. 4, 6 and 7. For example, hardware such as memoryand/or one or more processors may be dedicated to traffic engine 110, ormay be shared with POPs 120. Certain concepts of time varying CDNtraffic allocation will be explained first in the context of a trafficengine 110 added to operation of a typical POP-based CDN, beforeexpanding the concept to decentralized traffic allocation performedwithin POPs themselves.

CDN 100 receives content objects from one or more content providers 94and serves the content objects to end user systems 124 in response torequests therefrom. Although only one content provider 94 is shown, itis understood that CDN 100 may work with any number of content providers94. The content objects are addressed via one or more domain namesassociated with servers of CDN 100, by arrangement with each of thecontent providers 94, that is, a content provider 94 might own therights to, or otherwise be associated with the domain name, but mayarrange with CDN 100 to serve requests addressed to the domain name.Communications to and from end user systems 124, content providers 94,their respective content databases 92, CDN 100 and other entities may berouted through the Internet, illustrated in FIG. 2 as instances ofInternet 104. End user systems 124 may access internet 104 throughInternet Service Providers (ISPs) 122, as shown. Content providers 94typically store content objects such as web pages (or partial contenttherefor), documents, audio and video files and the like in contentdatabase 92. Content providers 94 are typically customers of CDN 100that pay or otherwise compensate CDN 100 for efficient distribution ofcontent objects to end user systems 124. The content objects may beprovided from content database 92 directly to one or more POPs 120. Thenumber of POPs 120 within CDN 100, content providers 94, end usersystems 124 and ISPs 122 are arbitrary and are not limited to thenumbers of such items illustrated in FIG. 2.

In a first example of operation of CDN 100, an end user system 124requests content from a domain name that is associated with contentprovider 94 through CDN 100. To determine the computer that fulfillsrequests directed to the domain name, a domain name resolution requestis typically routed through an ISP 122 and Internet 104 and presented toa domain name service (DNS) 115 of CDN 100. DNS 115 responds to domainname resolution requests either with one or more specific IP addressesof servers that host the domain name, or with other domain names and/orIP addresses in a recursive process that continues to try to find aserver that hosts the domain name. The responses provided by DNS 115 arebased on information that is provided by CDN 100 for lookup tableswithin DNS 115. DNS 115 may respond to a domain name resolution requestwith one or more specific IP addresses, and an indication that theresponses are authoritative, that is, the IP address is known to fulfillrequests directed to the domain name. Alternatively, DNS 115 may respondwith one or more other domain names or IP addresses with an indicationthat the name(s) or address(es) are not authoritative, such that theoriginating ISP will know that further domain name resolution will beneeded to find a server that hosts the domain name. (When a domain nameresolution response is for a different domain name as opposed to an IPaddress, the response cannot be authoritative.) An IP address of aserver within one of the POPs 120 may be included in an authoritativeresponse, possibly because it is known by CDN 100 that the server hoststhe requested domain name, or because it is geographically close to therequesting ISP or end user system, to minimize delays in serving therequest. The end user system generates a request to the IP address ofthe indicated server, which responds by forwarding the requested contentobject back through Internet 104 and ISP 122 to the requesting end usersystem 124.

In the above example of operation of CDN 100, typically an arrangementor contract is in place between content provider 94 and CDN 100 suchthat CDN 100 is compensated for delivering the content from contentprovider 94 to the requesting end user system 124. Time varying CDNallocation implements time varying adjustments within the scope of sucharrangement, or modifies the arrangement itself. For example, in somecircumstances traffic may be rerouted to another network. In an unlikelybut possible option, requests may be refused entirely without rerouting.In embodiments, traffic engine 110 allocates the traffic by providing,through DNS 115, authoritative IP addresses that correspond to serverswithin CDN 100 to serve a request directly. Alternatively, trafficengine 110 provides, through DNS 115, IP addresses and/or domain namesthat direct traffic to other networks (e.g., networks other than CDN100), sometimes as part of the recursive domain name resolution methoddiscussed above, to find an IP address that will finally serve therequest.

Thus, in CDN 100, traffic engine 110 manages the responses delivered byDNS 115 such that incoming requests are either “served” or “shunted”depending on whether the traffic is deemed economically desirable or notat a given time. In the context of this disclosure, “serving” trafficmeans that the IP addresses provided by CDN 100 to DNS 115 steerrequests from an end user system 124 into CDN 100, instead of sendingthe end user system's request to a different network. “Shunting” meansthat the domain names and/or IP addresses provided by CDN 100 to DNS 115steer requests not to servers within CDN 100, but to an IP address ordomain name of an alternate network, to which the request for content isthen directed. Thus, traffic engine 110 evaluates an algorithm orfunction as having a “serve” value or a “shunt” value, and communicatesappropriate information transfers and/or coordinates other activities toimplement serving or shunting.

As noted above, traffic engine 110 may implement time varying trafficallocation based on time of day, current network traffic, changes incurrent network traffic, estimated traffic due to scheduled events,estimated traffic due to breaking news, market price for traffic,network health and/or other factors. Various modes of assessing trafficand/or characterizing operation of CDN 100, and various responses of CDN100 thereto, are also within the scope of the present disclosure.

Modes of assessing and/or steering traffic include but are not limitedto the following examples. These modes of assessing and/or steeringtraffic may assess, calculate and/or steer traffic according to thedegree to which the traffic is desirable from the point of view ofmaximizing revenue generated by, or efficiency of, the CDN.

In a first exemplary embodiment, traffic engine 110 utilizes historicdata (e.g., the daily demand fluctuations shown in FIG. 1) as a firstorder criterion for whether incremental traffic should be served orshunted. POPs 120 can generate analytics information 250 of individualtransactions handled through each POP; analytics information 250 (oraggregates thereof) can be accessed and analyzed by traffic engine 110to generate real time network demand metrics such as instantaneoustraffic load and change in instantaneous traffic load over time. In thissense, the daily demand shown in FIG. 1 is an example of analyticsinformation. These metrics can be calculated across all traffic and/ormay be filtered to characterize traffic loads related to specificcontent providers, specific content objects, specific geographic regionsand the like. POPs 120 can generate network health related information,and such information can also be analyzed by traffic engine 110 todetermine how many POPs 120 are currently online, what capabilities thecurrently online POPs have, and whether operation of any of the POPs iscompromised for some reason. The information generated by POPs 120 mayreflect operation of each POP as a whole, or may be granular to thelevel of components within each POP (e.g., to the level of individualservers within a POP, as discussed further below).

In a second exemplary embodiment, CDN 100 also receives informationabout scheduled releases of content that are expected to be in highdemand, such as software, movie or video game releases, or about otherscheduled events that are expected to increase traffic significantly,such as sporting, political or cultural events as items of algorithminput 112 (see schedule input 285, described below in connection withFIG. 3). CDN 100 may use algorithm input 112 in a function thatdetermines whether traffic should be served or shunted. In embodiments,algorithm input 112 may provide a simple time based function that shuntsall (or a large percentage of) requests within a certain daily timewindow and serves all (or a large percentage of) requests at othertimes.

In further exemplary embodiments, modes of reacting to traffic demandinclude but are not limited to the following examples. For example, CDN100 may, through traffic engine 110 and DNS 115, serve certain trafficand shunt other traffic. From a revenue generation standpoint, it may beadvantageous to serve all traffic when demand is low, but less so astraffic approaches the capacity of CDN 100 to serve the traffic.Selected traffic (or all traffic) may be shunted by providing DNS 115with domain names and/or IP addresses of one or more alternate networksor servers, and instructing DNS 115 to provide such domain names and/orIP addresses in response to requests that could otherwise have beenserved by CDN 100. The traffic to be shunted may be selected on thebasis of contracts between CDN 100 and content providers 94 that eitherallow or forbid such shunting, or on the basis of revenue to be realizedby CDN 100 for serving requests during actual or historically highdemand periods. In another example, CDN 100 may increase price that isbilled for serving content when traffic is high or otherwise problematicfor CDN 100 to serve, or alternatively, may decrease price that isbilled for serving content when traffic is lower or otherwise easy forCDN 100 to serve. In another example, CDN 100 may modify technicalguarantees that apply to delivery of content by CDN 100. Technicalguarantees may include latency, bandwidth, percentage of packets droppedand/or other factors.

Any of the reactions cited above can also be implemented as combinationsor on variable scales instead of abrupt switches. For example, CDN 100may, through traffic engine 110 and DNS 115, serve a percentage oftraffic for given content or for a given content provider 94, and mayshunt the remainder of traffic for the given content or for the givencontent provider as a baseline condition. In an embodiment, trafficengine 110 evaluates a service percentage function to calculate apercentage of requests that should be served, with other requests beingshunted. CDN 100 may then increase or decrease the percentage of trafficserved, according to traffic levels or characterization of the operationof CDN 100. When traffic is low, CDN 100 may serve all of the traffic,while when traffic is high, CDN 100 may shunt some or all of thetraffic. Traffic to be served and/or shunted may be selected by factorssuch as the type and/or the content provider of requested content. Suchchanges could also include changing pricing and/or technical guarantees.In embodiments, changes such as those discussed above could be submittedin real time to the content provider 94 for acceptance or refusal (seeFIG. 3).

Traffic engine 110 may calculate and/or update a real time “marketprice” model that can be used as a reference point for serving orshunting traffic. That is, if contractual terms allow, a serve-or-shuntdecision can depend on whether the applicable price for serving requestsfor a given content provider 94 is greater than the current marketprice.

Content provider 94 may form arrangements with an operator of CDN 100that may allow acceptance or refusal of time varying price and/orservice changes in real time through logic implemented in contentprovider 94, or may allow CDN 100 to vary price and/or service on apre-agreed basis. When content provider 94 consents to the price and/orservice offered by traffic engine 110, operation of CDN 100 proceeds asdiscussed in the first example above, with CDN 100 serving content toend user systems 124 in response to requests therefrom. When CDN 100continues to serve requests, time varying variations of service qualitymay be implemented. However, if content provider 94 refuses a priceand/or service offered by traffic engine 110, CDN 100 may implement avariety of alternate responses to requests for content from contentprovider 94. For example, CDN 100 may, in one example, provide anindication that the requested content is “not found” or “temporarilyunavailable.” In another example, CDN 100 has knowledge of one or moreother networks that can serve domain names sourced by content provider94, and shunts requests for such content to such other networks.Shunting of such requests may be preferable, from the point of view of acontent provider 94, to simply refusing end users' requests, andperforming the shunting may be acceptable to CDN 100 as a temporary andsimple (e.g., less bandwidth intensive) alternative to filling therequests. To implement the alternate service of shunting requests,traffic engine 110 receives one or more alternate IP addresses or domainnames from content provider 94 for networks that can serve requests thatwould otherwise be served by CDN 100. The alternate IP addresses ordomain names are provided to DNS 115 as required such that when agreedto by CDN 100 and content provider 94, DNS 115 responds to requests fordomain name resolution with an IP address or domain name that tells therequesting end user (or ISP) to “go there” to get the request fulfilled.In other examples, time varying CDN allocation may result in continuedservice, but with differing compensation levels or under differingperformance guarantees. In still other examples, only a portion oftraffic may be shunted, with some requests continuing to be served by agiven CDN and other requests being routed to other networks through thealternate IP addresses or domain names as noted above.

It is appreciated herein that DNS 115 may be a part of CDN 100, as shownin FIG. 2, or may be a service that is owned and operated separatelyfrom CDN 100. When DNS 115 is separate from CDN 100, traffic engine 110still controls traffic directed by DNS 115 to CDN 100, by feeding DNS115 with domain names and/or IP addresses to use in responses to enduser system requests for a given domain name.

It is also possible for CDN 100 to serve or shunt traffic at the levelof individual content objects, as opposed to all traffic addressed to agiven domain name. Although paths and file names are not addressed in aDNS request and solution, subdomains can be utilized to discriminateseparately from a root domain name. For example, in the universalresource indicator (URI):

-   -   example.com/foo/bar        only example.com is considered the domain name, with /foo/bar        considered a path to a file; a DNS request would only be based        on the example.com part of the URI. But a subdomain of        example.com can be specified with a URI of:    -   foobar.example.com.        A DNS (e.g., DNS 115) sees the subdomain as part of the domain        name being resolved, and thus can provide different domain        name(s) and/or IP address(es) for foobar.example.com than for        example.com. Thus, by utilizing subdomains having differing DNS        domain names and/or IP addresses corresponding to specific        content, a CDN can manage (that is, can serve or shunt) traffic        at the level of the specific content.

FIG. 3 is a schematic diagram illustrating certain details of CDN 100,FIG. 2, in an embodiment. FIG. 3 is simplified so as to show interactionof traffic engine 110 with only one exemplary POP 120 of CDN 100 andonly one ISP 122 and end user system 124, for clarity of illustration,but CDN 100 may include any number of POPs 120 and may serve any numberof ISPs 122 and end user systems 124. In the embodiment shown in FIG. 3,traffic engine 110 includes a traffic director 210, an applicationprogram interface (API) 215, an alternate DNS database 220, a trafficdatabase 230, a schedule database 235 and a rules database 240.

API 215 provides an interface for content provider 94 to exchangeinformation with CDN 100, including, in embodiments, identifying contentobjects for CDN 100 to upload and distribute, accepting or refusing timevarying service changes, and providing domain names and/or IP addressesof alternate networks, to which requests may be directed by CDN 100,through DNS 115. Traffic engine 110 may store domain names and/or IPaddresses provided by content provider 94 in an optional, alternate DNSdatabase 220. Through API 215, in certain embodiments, content provider94 may consent to, or refuse, services offered by traffic engine 110 ofCDN 100, as the terms offered for such services vary from time to time.Content provider 94 may utilize an automated function to respond tocertain offers or terms communicated from time to time by traffic engine110. Alternatively, one or more individuals may evaluate and respond tooffers or terms communicated by traffic engine 110, through API 215, onbehalf of content provider 94. Alternatively, traffic engine 110 of CDN100 may implement time varying traffic allocation based on apre-established agreement between a content provider and CDN 100 thatpermits at least some time varying flexibility in serving requests forcontent.

FIG. 3 also shows POP 120 including analytics information 250. Trafficdirector 210 of traffic engine 110 can access and utilize analyticsinformation 250 to determine demand on, and/or operational health of,POP 120. For example analytics information 250 may include entries thatdetail the time, size and specific content of each request placed to orserved by POP 120, and may include entries that detail the operatingcharacteristics of POP 120 such as resources available at each POP 120,cumulative operating time, percent utilization of the resources of POP120, degraded status of any resources of POP 120, power consumed by andtemperature of servers of POP 120, and the like. Analytics information250 may be aggregate statistics at a summary level for POP 120 or CDN100, or may be more granular, such as information about individualservers within POP 120. All such information is accessible by trafficdirector 210, which may generate aggregated statistics about networkdemand on, and health of, POPs 120 in real time. The aggregatedstatistics may be utilized by traffic director 210 to make time varyingnetwork allocation decisions and/or may be stored in traffic database230 for future use.

FIG. 3 also shows algorithm input 112, including optional algorithms 270to be utilized by traffic engine 110 in forming offered price and/orservice guarantees. Traffic engine 110 uses algorithm input 112 to formor modify price and/or technical guarantees according to demand andanalytics information characterizing CDN 100. For example, inembodiments, traffic director 210 receives algorithms 270 that may beevaluated to provide a serve or shunt value, a market price for deliveryof content by CDN 100, and/or technical guarantee levels or changesthereto, based on actual or expected demand. Actual demand may beassessed in real time using analytics information 250 related to asubset of transactions, while expected demand may be assessed usinghistorical analytics information (e.g., the data of FIG. 1), real timerate of change of demand calculated from analytics information 250, andschedule input 285. Algorithm input 112 also includes optionalparameters 275 to be utilized in algorithms 270, such as baseline demanddata or models (e.g., the data of FIG. 1 or abstractions thereof),baseline price models, pricing rates for certain services or servicequality (e.g.: prices per request, per megabyte of content to bedelivered, or both; price dependence on bitrate to be provided; pricesfor internal processing services such as transcoding; etc.). Algorithminput 112 may also include customer rules 280, which may for exampleconstrain traffic director 210 when handling traffic related to one ormore content providers 94 on a case by case basis, as required bycontracts between the operator of CDN 100 and a given content provider94. For example, a contract might be summarized as an agreement that CDN100 will provide a certain price to a content provider 94 for requestsactually served by CDN 100, in exchange for CDN 100 retaining theability to shunt or refuse a certain amount of traffic to an alternateCDN during peak periods. The certain amount of traffic may or may not belimited in terms of number of requests, over a certain percentage oftime, at certain times of day and the like. When shunting is part of acontract, content provider 94 may provide domain name(s) and/or IPaddress(es) of one or more alternate networks to take the traffic thatis shunted. The domain name(s) and/or IP address(es) may be input bycontent provider 94 to API 215 and routed to alternate DNS database 220,or uploaded to traffic engine 110 as part of customer rules 280. Whentraffic director 210 determines from time to time that shunting trafficis both advantageous and acceptable under contract term with aparticular content provider 94, the domain name(s) and/or IP address(es)for the alternate network(s) are supplied to DNS 115 of CDN 100, suchthat requests for the content to be shunted are not served, butresponded to by supplying the domain name(s) and/or IP address(es) forthe alternate network(s). Algorithm input 112 may also include scheduleinput 285, which may be fed directly to traffic director 210 and/orstored in an optional schedule database 235 of traffic engine 110.Traffic director 210 may utilize schedule input 285 to predict changesin traffic due to prescheduled events. Schedule input 285 may includeinformation about events expected to affect network traffic, so thatprices can be adjusted in advance of the expected traffic changes, tomaximize productivity and/or revenue generated by CDN 100, given theexpected traffic changes. For example, schedule input 285 may includescheduled timing of major sports or political events, video releases,software releases or video game releases that could significantlyincrease network traffic.

FIG. 4 is a schematic diagram illustrating further exemplary details oftraffic engine 110 and DNS 115 shown in CDN 100, FIG. 2, in anembodiment. Only alternate DNS database 220 and traffic director 210 areshown within traffic engine 110 in FIG. 4, for clarity of illustration;traffic engine 110 may also include some or all of the items shown inFIG. 3 that are not shown in FIG. 4. A specific example of DNS 115, FIG.2, is shown in FIG. 4 as DNS 115-1 for clarity with respect to other DNSembodiments described later herein.

DNS operation is typically set up to be very simple and fast; forexample a conventional DNS function might simply execute and report asimple table look-up. However, in time varying traffic allocationembodiments, it is possible and advantageous for a DNS to quickly run afew lines of code, to combine serving the DNS request with an actualserve or shunt decision, instead of having to rely on such decisionsfrom an upstream decision maker (e.g., traffic engine 110). In theembodiment shown in FIG. 4, DNS 115-1 evaluates simple algorithms andquickly makes and implements serve or shunt decisions. High speedoperation of DNS 115-1 is facilitated by traffic director 210, whichprovides DNS 115-1 with ready-to-evaluate algorithms and lookup tables,as now described.

In FIG. 4, traffic director 210 includes a processor 125 and memory 130(alternatively, if traffic engine 110 operates as part of a POP, trafficdirector 210 may operate using a processor and memory of the POP). Thememory stores one or more of base algorithms 140, parameters 145,current algorithms 150-1, a serve DNS table 160-1, and a shunt DNS table160-2. Traffic director 210 may for example receive algorithms 270 intomemory as part of algorithm input 112, FIG. 3, and store them as basealgorithms 140; and may receive parameters 275 into memory as part ofalgorithm input 112, FIG. 3, and store them as parameters 145.

Traffic director 210 analyzes traffic and may generate currentalgorithms 150-1 for use by DNS 115-1 for example by selecting amongpossible base algorithms 140, inserting parameters 145 into basealgorithms 140, and/or modifying parameters 145 and then inserting themodified parameters into base algorithms 140. When an algorithm is thusmodified and ready to run, the algorithm is loaded into a table ofcurrent algorithms 150-1. A set of current algorithms 150-2 within DNS115-1 is created and/or maintained based on current algorithms 150-1 intraffic director 210. Similarly, serve DNS entries 160-1 and shunt DNSentries 165-1 are created by or stored within traffic director 210, andcorresponding lookup tables 160-2 and 165-2 are created and/ormaintained based on serve DNS entries 160-1 and shunt DNS entries 165-1.

DNS 115-1 also includes a DNS processor 180, optional DNS analytics 170,and DNS I/O 190. When DNS 115-1 receives a DNS request from an end usersystem 124 (typically through an ISP 122 and Internet 104, as shown) theDNS processor examines the domain name requested, and selects analgorithm from set of current algorithm 150-2 that corresponds to therequested domain name. The current algorithm is retrieved from currentalgorithms 150-2 and evaluated by DNS processor 180 to return a serve orshunt decision. Depending on the decision, a lookup from serve DNS table160-2 or shunt DNS table 165-2 provides the appropriate outgoing IPaddress(es) and/or domain name(s), which are transmitted back to therequesting end user system 124 by DNS I/O 190. DNS I/O 190 may alsoprovide an indication of each outgoing DNS response to optional DNSanalytics 170, and DNS processor 180 may utilize information from DNSanalytics 170 as it evaluates a current algorithm to determine a serveor shunt decision. This may particularly be the case when DNS processor180 evaluates a service percentage algorithm that calls for serving orshunting a percentage of requests, with the percentage varying accordingto traffic conditions, price or other factors. Use of DNS analytics 170in the serve or shunt decision making within DNS 115-1 helps the DNSprocess run quickly by having all necessary information and/oralgorithms available. That is, DNS 115-1 does not need wait forinformation about service of previous requests, or other information,from traffic engine 110 or POPs 120 to evaluate the service percentagealgorithm when an incoming domain name resolution request is received.Similarly, traffic engine 110 and other parts of CDN 100 need not verifywhere previous requests for content were actually served (e.g., by CDN100 or another network); DNS 115-1 simply uses information about its ownprevious responses to serve or shunt DNS requests instead.

FIG. 5 is a schematic diagram illustrating certain details of a POP300-1 that supports time varying traffic allocation, in an embodiment.POP 300-1 supports time varying CDN traffic allocation at the level of asingle POP, that is, all of the functionality required to perform thetraffic allocation is within POP 300-1, instead of utilizing a trafficengine 110 across POPs, as in FIGS. 2 and 3. Time varying trafficallocation at the level of single POPs advantageously providesgranularity of traffic allocation, sometimes allocating traffic awayfrom overburdened servers within a POP more effectively than a centraltraffic engine trying to work with all POPs in a CDN simultaneously.That is, many of the reasons to decentralize time varying trafficallocation at the POP level are similar to reasons for having POPs thatare geographically spread out in the first place. POPs that aregeographically spread are necessarily spread among time zones, andtherefore will see traffic peaking at different times per POP. Forexample, if a streaming video provider typically generates a demand peakbetween 5 pm and 8 pm, the aggregate demand may be excessively weightedby North American demand to look like the demand shown in FIG. 1, butworldwide on a given day, regional peaking will occur sequentially inAustralia, eastern Asia, central Asia, the Middle East, Europe, SouthAmerica, eastern North America, and western North America. Because POPsin such regions may have individual traffic handling limitations, it isadvantageous for such POPs to implement time varying traffic allocationindependently.

However, decentralization of the time varying traffic allocationfunction need not cause undue repetition of support activities for thefunction at multiple POPs, as now discussed. Traffic engine 310-1 mayinclude any or all of the capabilities of traffic engine 110, FIGS. 2and 3; for example traffic engine 310-1 may include one, some or all ofa traffic director, a traffic database, a schedule database, an API, analternate DNS database, and a rules database as those items aredescribed with respect to FIG. 3. As shown in FIG. 5, traffic engine310-1 accepts schedule input 285 and algorithm input 112, and interfaceswith a content provider 94, much like traffic engine 110 interfaces withthe same external entities in FIGS. 2 and 3. Instead of interfacing withPOPs 120, traffic engine 310-1 interfaces with individual edge servers320. POP 300-1 interfaces with a domain name service (DNS) 330, shown inFIG. 5 as outside POP 300-1; however, DNS 330 may be a separate entityas shown, or may reside on one of edge servers 320 or traffic engine310-1 within POP 300-1. A single ISP 122 and end user system 124 arealso shown for clarity of illustration, it being understood that POP300-1 may serve requests from any number of ISPs 122 and/or end usersystems 124.

Typical operation of a CDN would include routing incoming requests fromend user system 124 via ISP 122 to DNS 330 for resolution of eachincoming request by domain name, to an IP address of a specific edgeserver 320 that can serve the domain name. In FIG. 5, traffic engine310-1 and DNS 330 not only determine which servers serve which domainnames, but also whether a given request should be routed to an edgeserver in POP 300-1, or should be denied or shunted to another network.This is done for example by traffic engine 310-1 maintaining duplicatetables of DNS entries corresponding to normal operation of POP 300-1(e.g., serving all requests directed to domain names that can besupported by edge servers 320 therein) and operation in which at leastcertain content object requests are to be shunted. A first tablecorresponds to normal operation provides IP addresses of edge servers320 that can serve certain domain names, while a second tablecorresponds to operation in which requests for the domain names are tobe shunted, provides domain names and/or IP addresses of an alternatenetwork that can serve the domain names. The alternate domain namesand/or IP addresses are designated by content provider 94. Trafficengine 310-1 writes the appropriate table entries to a DNS interface 335that relays the table entries to DNS 330, such that the table entriesbecome available for immediate use. DNS interface 335 may be implementedby software running on a server of POP 300-1 and/or may be implementedwithin traffic engine 310-1. When traffic engine 310-1 determines thatrequests for a certain domain name are to be shunted, traffic engine310-1 writes entries from the second table, through DNS interface 335,to overwrite corresponding entries in DNS 330 such that DNS 330 respondswith the IP address of the alternate network. When traffic engine 310-1determines that requests for the domain name are once again to befulfilled instead of shunted, traffic engine 310-1 writes entries fromthe first table, through DNS interface 335, to overwrite thecorresponding entries in DNS 330 such that DNS 330 responds by providingthe IP address of the edge server 320 that can fulfill the requests. Anoptional connection 340 to other POPs allows POP 300-1 to shareinformation such as traffic levels, routing rules and alternate IPaddresses with other POPs, as discussed further below. Also, it shouldbe understood that optional connection 340 may be a real connection(e.g., a wide area network (WAN) or local area network (LAN) connection)or a virtual connection (e.g., a request routed through Internet 104,like certain other connections shown in FIG. 5).

FIG. 6 is a schematic diagram illustrating certain details of a POP300-2 that supports time varying traffic allocation, in an embodiment.POP 300-2 supports time varying CDN traffic allocation at the level of asingle POP, except that unlike POP 300-1, POP 300-2 does not supportinput functions such as accepting analytics input and interface with acontent provider. POP 300-2 includes a traffic engine 310-2 that mayinclude for example some or all of a traffic director, a trafficdatabase, an alternate DNS database, and a rules database as those itemsare described with respect to FIG. 3. The functions supported by trafficengine 310-2 can perform time varying traffic allocation at a POP level,but traffic engine 310-2 does not take raw input about customer rules oralternate domain names and/or IP addresses, or analytics input fromother POPs. Instead, such information is provided via connection 340 toone or more other POPs, for example POP 300-1, FIG. 5, as shown. Insteadof analyzing input from content provider 94 and algorithm input 112,traffic engine 310-2 receives ready-to-implement rules, algorithms andalternate domain names and/or IP addresses from another POP throughconnection 340 (as in FIG. 5, it should be understood that connection340 may be a real or a virtual connection, e.g., a connection madethrough the Internet). Traffic engine 310-2 then applies the receivedrules and algorithms in light of its own traffic conditions to implementtime varying traffic allocation locally. In this manner, a single POP300-1 with complete analysis and content provider interface capabilitycan serve more or less as a “master” POP for time varying trafficallocation purposes, while several POPs 300-2 function as “slave” POPs.As noted above, this provides a way to decentralize time varying trafficallocation without completely duplicating support features thereofacross a network. POPs 300-2 may also analyze local traffic conditionsand report such conditions so that POP 300-1 can develop aggregatenetwork traffic data, which may in turn affect the rules propagated backout from POP 300-1 to POPs 300-2.

It should be clear from the above discussion that variations on thedifferences between POPs 300-1 and 300-2 are also possible; for examplea POP otherwise similar to POP 300-2 may include some capability tointerface with a content provider 94, and/or to receive and utilizealgorithm input 112. CDNs having POPs with various mixtures of thecapabilities described above are within the scope of the presentdisclosure.

In embodiments, information that can be captured and used to assesstraffic demand is not limited to information provided by sources such asalgorithm input 112, content providers 94 and/or connections 340. Forexample, information of any system or network connected to internet 104may be captured by CDN 100 or POPs 120, 300 through their respectiveconnections to internet 104, as discussed with respect to FIGS. 5 and 6via connections 340. FIG. 7 is a schematic drawing illustratingexemplary connectivity of multiple networks 80, content providers 94,CDNs 100, ISPs 122 and their respective end user systems 124 overinternet 104. Information from any such sources can be utilized toassess traffic demand.

FIG. 8 is a swim diagram illustrating a method 500 for time varying CDNtraffic allocation. The steps of method 500 may be executed by a contentprovider (e.g., content provider 94, FIGS. 2, 3, 5 and 6), a trafficengine (e.g., traffic engine 110, FIGS. 2 and 3, or traffic engine 310,FIGS. 5 and 6), one or more edge servers (e.g., any of edge servers 320,FIGS. 5 and 6, or edge servers within any of POPs 120, FIGS. 2 and 3 orPOPs 300, FIGS. 5 through 7), a DNS (e.g., any of DNS 115, FIGS. 2through 4, or DNS 330, FIGS. 5 and 6) and an end user system (e.g., anyof end user systems 124, FIGS. 1 through 7). Method 500 includes threesets of linked steps: steps 502 through 510 that correspond to setup ofa CDN for a content item, steps 520 through 528 that correspond to setupof the DNS with appropriate IP addresses and/or domain name informationfor the content item, and steps 540 through 560 that perform trafficallocation for the content item. Each of the linked sets of steps may beperformed independently and/or repeatedly without necessarily performingthe other linked sets of steps, as discussed below.

Method 500 begins with step 502, in which content is provided forstorage in the CDN. In step 504, an edge server stores the content. Anexample of steps 502 and 504 is content provider 94 transmitting contentto an edge server 320, or an edge server within a POP 120 or 330, thatstores the content. In step 506, the edge server that stores the contentprovides its IP address, associated with a domain name that provides thecontent, to a traffic engine. This provides the traffic engine with anIP address of a server that can serve the domain name directly. Anexample of step 506 is edge server 320, or an edge server within a POP120 or 330, that stores content, transmitting an IP address to trafficengine 110, FIGS. 2 and 3, or traffic engine 310, FIGS. 5 and 6,associating the IP address with the domain name. In step 508, thecontent provider provides alternate domain name and/or IP addressinformation for a different network that can serve the domain name, tothe traffic engine. This provides the traffic engine with an IP addressor alternate domain name for a network that can serve the domain name inthe event that traffic is to be shunted. An example of step 508 iscontent provider 94 transmitting alternate IP address or domain nameinformation for a different network that can serve the domain name totraffic engine 110, FIGS. 2 and 3, or traffic engine 310, FIGS. 5 and 6,associating the alternate IP address or domain name information withidentity of the domain name. In step 510, the traffic engine stores theIP addresses and/or domain name information received in steps 506 and508. Steps 502 through 510 are repeated as necessary for any domain namefor which time varying allocation is to be performed; these steps may beperformed repeatedly to store IP addresses and/or domain nameinformation for a given domain name before, while, or after other stepsof method 500 are performed for other domain names.

In step 520 of method 500, one or more edge servers generate analyticsinformation that a traffic engine can use to evaluate a service functionto yield a serve value or a shunt value. An example of step 520 is edgeserver 320, or an edge server within a POP 120 or 330, generatinganalytics information. This information is received by a traffic enginein step 522. Analytics information can also be received by a trafficengine from other sources that are not shown in FIG. 8 for clarity ofillustration. For example, analytics information can be obtained fromschedule input 285, FIG. 3, or received from other edge servers or POPs,or can simply be based on time of day or day of week, as discussedabove. In step 524, the traffic engine utilizes the analyticsinformation to evaluate a service function to yield a serve or shuntvalue for one or more domain names. An example of step 524 is trafficengine 110, FIGS. 2 and 3, or traffic engine 310, FIGS. 5 and 6,evaluating a service function to calculate a shunt value for a specificdomain name. In step 526, the traffic engine transmits IP addressesand/or alternate domain name information, associated with one or moredomain names depending on the serve or shunt value determined in step524, to the DNS for use in answering domain name resolution requests forthe specific domain name. An example of step 524 is traffic engine 110,FIGS. 2 and 3, or traffic engine 310, FIGS. 5 and 6, transmittingalternate domain name information to DNS 115, FIGS. 2 through 4, or DNS330, FIGS. 5 and 6, associated with the specific domain name for whichstep 524 was performed, above. In step 528, the DNS stores the IPaddresses and/or alternate domain name information received from thetraffic engine, associated with the corresponding domain name(s), ascurrently valid DNS responses in the DNS lookup table. Having an IPaddress or alternate domain name information in the lookup tableessentially allows the DNS to provide quick service that includes theresult of the serve or shunt decision, by providing the DNS with theresponse corresponding to the serve or shunt value, whichever isapplicable at a given time.

Like linked steps 502 through 510, steps 520 through 528 can beperformed at nearly any time and/or repeatedly, regardless of whetherdomain name resolution requests are actually received. The onlyprerequisite to the performance of steps 520 through 528 is that IPaddresses and/or alternate domain name information have beencommunicated to the traffic engine (e.g., in steps 502 through 510) tobe acted upon. For example, the traffic engine may be set up to runsteps 520 through 528 whenever new content is received, and repeated forthe content periodically thereafter. Analytics information may also beutilized to trigger repetition of steps 520 through 528, for examplewhen traffic levels reach a threshold or when the analytics informationshows that a given domain name is in high demand.

In step 540 of method 500, an end user system sends a domain nameresolution request associated with a domain name to the DNS. An exampleof step 540 is any end user system 124 sending a domain name resolutionrequest to any of DNS 115, FIGS. 2 through 4, or DNS 330, FIGS. 5 and 6.In step 542, the DNS responds to the domain name resolution request bysupplying the currently valid DNS response. Because the currently validDNS response was stored in step 528, the response incorporates theresult of the serve or shunt value for the domain name that wasevaluated by the traffic engine. An example of step 542 is DNS 115,FIGS. 2 through 4, or DNS 330, FIGS. 5 and 6 returning the alternatedomain name information that was stored for the domain name in step 528,discussed above. In steps 544 and 546, the end user system receives theDNS response and requests a domain name utilizing the DNS response.Examples of steps 544 and 546 are the end user system 124 that sent thedomain name resolution request in step 540, receiving the DNS responseand requesting the domain name utilizing the DNS response as a resolvedaddress. In the case noted above, the alternate domain name informationresults in method 500 ending at step 560, because the request is shuntedto a different network named by the alternate domain name. However, if aserve value was calculated in step 524, and an IP address of an edgeserver of the CDN is provided in step 546, the request for content isforwarded to the edge server, which responds to the requested domainname in step 548. The requested content is received at the end usersystem in step 550, whereafter method 500 ends at step 560.

Like steps 502 through 510 and 520 through 528, steps 540 through 560may be performed repeatedly without repetition of the previous steps;the only prerequisite to performance of steps 540 through 560 is thatthe DNS have a currently valid response stored for a content object. Oneconsequence of this is that by default, a CDN may simply set up adefault DNS response when a content item is first uploaded into the CDN(e.g., corresponding to a default serve decision) and only executingsteps 506 through 510, and steps 520 through 528, to prepare forpossible shunting of requests, as a hedge against (or in response to)high demand.

Specific details are given in the above description to provide athorough understanding of the embodiments. However, it is understoodthat the embodiments may be practiced without these specific details.For example, circuits may be shown in block diagrams in order not toobscure the embodiments in unnecessary detail. In other instances,well-known circuits, processes, algorithms, structures, and techniquesmay be shown without unnecessary detail in order to avoid obscuring theembodiments. It is contemplated that as necessary, functionality of theitems identified herein may be provided by specially designed electronichardware or by software executing on electronic hardware.

Implementation of the techniques, blocks, steps and means describedabove may be done in various ways. For example, these techniques,blocks, steps and means may be implemented in hardware, software, or acombination thereof. For a hardware implementation, the processing unitsmay be implemented within one or more application specific integratedcircuits (ASICs), digital signal processors (DSPs), digital signalprocessing devices (DSPDs), programmable logic devices (PLDs), fieldprogrammable gate arrays (FPGAs), processors, controllers,micro-controllers, microprocessors, other electronic units designed toperform the functions described above, and/or a combination thereof.

Also, it is noted that the embodiments may be described as a processwhich is depicted as a flowchart, a flow diagram, a swim diagram, a dataflow diagram, a structure diagram, or a block diagram. Although adepiction may describe the operations as a sequential process, many ofthe operations can be performed in parallel or concurrently. Inaddition, the order of the operations may be re-arranged. A process isterminated when its operations are completed, but could have additionalsteps not included in the figure. A process may correspond to a method,a function, a procedure, a subroutine, a subprogram, etc. When a processcorresponds to a function, its termination corresponds to a return ofthe function to the calling function or the main function.

Furthermore, embodiments may be implemented by hardware, software,scripting languages, firmware, middleware, microcode, hardwaredescription languages, and/or any combination thereof. When implementedin software, firmware, middleware, scripting language, and/or microcode,the program code or code segments to perform the necessary tasks may bestored in a machine readable medium such as a storage medium. A codesegment or machine-executable instruction may represent a procedure, afunction, a subprogram, a program, a routine, a subroutine, a module, asoftware package, a script, a class, or any combination of instructions,data structures, and/or program statements. A code segment may becoupled to another code segment or a hardware circuit by passing and/orreceiving information, data, arguments, parameters, and/or memorycontents. Information, arguments, parameters, data, etc. may be passed,forwarded, or transmitted via any suitable means including memorysharing, message passing, token passing, network transmission, etc.

For a firmware and/or software implementation, the methodologies may beimplemented with modules (e.g., procedures, functions, and so on) thatperform the functions described herein. Any machine-readable mediumtangibly embodying instructions may be used in implementing themethodologies described herein. For example, software codes may bestored in a memory. Memory may be implemented within the processor orexternal to the processor. As used herein the term “memory” refers toany type of long term, short term, volatile, nonvolatile, or otherstorage medium and is not to be limited to any particular type of memoryor number of memories, or type of media upon which memory is stored.

Moreover, as disclosed herein, the terms “memory” and/or “storagemedium” may represent one or more memories for storing data, includingread only memory (ROM), random access memory (RAM), magnetic RAM, corememory, magnetic disk storage mediums, optical storage mediums, flashmemory devices and/or other machine readable mediums for storinginformation. The term “machine-readable medium” includes, but is notlimited to portable or fixed storage devices, optical storage devices,and/or various other storage mediums capable of storing that contain orcarry instruction(s) and/or data.

While the principles of the disclosure have been described above inconnection with specific apparatuses and methods, it is to be clearlyunderstood that this description is made only by way of example and notas limitation on the scope of the disclosure.

1. (canceled)
 2. A content delivery network (CDN) that performs time varying traffic allocation, the network comprising: one or more edge servers, wherein: the edge servers store content corresponding to a domain name that is associated with a content provider, the content including a plurality of content objects that are associated with the content provider and are addressable through subdomain information of universal resource indicators (URIs), and the edge servers are configured to deliver ones of the content objects to end users, in response to requests received at the edge servers from the end users when URIs of the requests include subdomain information corresponding to the ones of the content objects; analytics information characterizing the CDN; and a traffic engine that: periodically evaluates a service function for a selected content object of the plurality of content objects as having a serve value or a shunt value, based at least in part on the analytics information; transmits one or more IP addresses of ones of the edge servers that can serve the selected content object, to an interface to a domain name service (DNS) while the service function has the serve value for the selected content object; and transmits alternate domain name information of a different network that can serve the selected content object, to the interface, while the service function has the shunt value for the selected content object; wherein, at a first time: the traffic engine determines, based on the analytics information, that the service function has the serve value for the selected content object, and the traffic engine transmits an IP address of the ones of the edge servers can serve the selected content object, to the interface, the CDN receives a request for the selected content object from one of the end users that includes a URI including the domain name and subdomain information associated with the selected content object, and the DNS provides the IP address of at least one of the edge servers that can serve the requested content object; and at a second time: the traffic engine determines, based on the analytics information, that the service function has the shunt value for the selected content object, the traffic engine transmits the alternate domain name information of the different network to the interface, the CDN receives a request for the selected content object from one of the end users that includes a URI including the domain name and subdomain information associated with the selected content object, and the DNS provides the alternate domain name information.
 3. The CDN that performs time varying traffic allocation of claim 2, the network comprising one or more points of presence (POPs), wherein each POP comprises one or more of the edge servers.
 4. The CDN that performs time varying traffic allocation of claim 2, the analytics information comprising information generated by one or more of the edge servers as the one or more edge servers deliver the content to the end users.
 5. The CDN that performs time varying traffic allocation of claim 2, the analytics information comprising aggregated information from a plurality of the one or more edge servers.
 6. The CDN that performs time varying traffic allocation of claim 2, wherein: a contract between a service provider and the CDN provides a contract price for delivery of the selected content object; the traffic engine models a market price for delivery of the selected content object based on the analytics information, the market price being lower at the first time than at the second time; and the traffic engine determines the service function as having the serve value when the market price is lower than or equal to the contract price, and determines the service function as having the shunt value when the market price is greater than the contract price.
 7. The CDN that performs time varying traffic allocation of claim 2, wherein the analytics information includes one or more of time of day, current traffic, current change of traffic over time and anticipated traffic due to a scheduled event.
 8. The CDN that performs time varying traffic allocation of claim 2, wherein the traffic engine comprises an application program interface (API) that receives at least part of the analytics information, and the alternate domain name information, from the content provider.
 9. The CDN that performs time varying traffic allocation of claim 8, wherein the API: forwards a proposed change in service or price to the content provider; and receives an acceptance or a rejection of the proposed change in service or price from the content provider.
 10. The CDN that performs time varying traffic allocation of claim 8, wherein: the traffic engine requests, from the content provider of the selected content object and through the API, the alternate domain name information of the different network that can serve the selected content object; and the API receives the alternate domain name information of the different network that can serve the selected content object from the content provider.
 11. A content delivery network (CDN) that performs time varying traffic allocation, the network comprising: one or more edge servers that store a plurality of content objects from one or more content providers, each one of the content objects being associated with at least one domain name identifying one of the edge servers that stores the one of the content objects, and subdomain information that identifies the one of the content objects, and deliver ones of the content objects to end users in response to requests from the end users; a traffic engine that: transmits an authoritative internet protocol (IP) address of one of the edge servers that stores at least a selected content object of the plurality of content objects, and alternate domain name information of a different network, to a domain name service (DNS), adjusts parameters of a service percentage algorithm that defines a percentage of incoming requests for the selected content object that will be served by the CDN, with other incoming requests being shunted to the different network, based on analytics information characterizing the CDN, and periodically transmits the service percentage algorithm to the DNS; and the DNS, which: receives the authoritative IP address, the alternate domain name information and the parameters from the traffic engine, receives requests for domain name resolution, and in response to a received domain name resolution request that includes subdomain information identifying the selected content object: evaluates the service percentage algorithm to determine whether the received domain name resolution request will be served or shunted, and responds to the received domain name resolution request with the authoritative IP address when the received domain name resolution request will be served, or with the alternate domain name information when the received domain name resolution request will be shunted.
 12. The CDN that performs time varying traffic allocation of claim 11, wherein: over a first time period: the DNS responds to a first percentage of domain name resolution requests that are for a domain name and include the subdomain information associated with the selected content object, by delivering the authoritative IP address, the one of the edge servers having the authoritative IP address serving the selected content object identified by the subdomain information, and the DNS responds to other domain name resolution requests that are for the domain name and include the subdomain information associated with the selected content object, by responding with the alternate domain name information, such that the other domain name resolution requests are shunted to the different network; and over a second time period: the DNS responds to a second percentage of domain name resolution requests that are for the domain name and include the subdomain information associated with the selected content object, by delivering the authoritative IP address, the one of the edge servers having the authoritative IP address serving the selected content object identified by the subdomain information, the second percentage being different from the first percentage based on the analytics information, and the DNS responds to other domain name resolution requests that are for the domain name and include the subdomain information associated with the selected content object, by responding with the alternate domain name information such that the other domain name resolution requests are shunted to the different network.
 13. The CDN that performs time varying traffic allocation of claim 12, wherein the DNS: generates DNS analytics information for domain name resolution requests served by the DNS, and over the first time period, utilizes the DNS analytics information to evaluate the service percentage algorithm.
 14. The CDN that performs time varying traffic allocation of claim 12, wherein the DNS: stores a serve DNS table containing the authoritative IP address and a shunt DNS table containing the alternate domain name information; and evaluates each incoming domain name resolution request to determine whether the incoming domain name resolution request is within the first percentage of domain name resolution requests.
 15. The CDN that performs time varying traffic allocation of claim 14, wherein the traffic engine stores a table of serve DNS entries and a table of shunt DNS entries, and periodically updates at least a portion of the serve DNS table and the shunt DNS table of the DNS with entries from the table of serve DNS entries and the table of shunt DNS entries.
 16. The CDN that performs time varying traffic allocation of claim 11, wherein the alternate domain name information is one of an alternate domain name of the different network and an IP address of a server of the different network.
 17. A method of time-based content delivery network (CDN) traffic allocation, comprising: storing a plurality of content objects on a plurality of edge servers that are configured to deliver the content to end users, in response to requests received by the edge servers from the end users, each one of the content objects being: from a content provider, associated with one or more domain names that are hosted by at least one of the edge servers, and associated with subdomain information that identifies the one of the content objects; storing one or more authoritative internet protocol (IP) addresses for each of the one or more edge servers that stores a selected content object of the plurality of content objects; storing alternate domain name information of a different network than the CDN, which also stores the selected content object; determining a service function as having a serve value or a shunt value for the selected content object, based at least in part on analytics information of the CDN; and when a domain name service (DNS) request is received by the CDN from one of the end users for the selected content object: when the service function for the selected content object has the serve value: transmitting the authoritative IP address for at least one of the edge servers that stores the selected content object, in response to the DNS request, receiving a request for the selected content object at the edge server having the authoritative IP address, and delivering the selected content object from the edge server having the authoritative IP address to the one of the end users; and when the service function for the selected content object has the shunt value: transmitting the alternate domain name information in response to the DNS request.
 18. The method of time-based CDN traffic allocation of claim 17, wherein the analytics information comprises traffic service records.
 19. The method of time-based CDN traffic allocation of claim 17, wherein the analytics information comprises operating characteristics of one or more of the plurality of edge servers.
 20. The method of time-based CDN traffic allocation of claim 17, wherein determining the service function as having the serve value or the shunt value utilizes information of prescheduled events.
 21. The method of time-based CDN traffic allocation of claim 17, wherein determining the service function as having the serve value or the shunt value follows customer rules. 